import os

if __name__ == '__main__':
    # 加载django项目的配置信息
    os.environ.setdefault("DJANGO_SETTINGS_MODULE","blogproject.settings")
    # 导入django,并启动django项目
    import django
    django.setup()

    from app01.models import Articles,Comment

    def find_root_comment(comment):
        # 找到comment的最终根评论
        if comment.parent_comment:
            # 还不是根评论 递归去找根评论
            return find_root_comment(comment.parent_comment)
        # 是根评论
        return comment

    comment_dict = {

    }
    # 找到某个文章的所有评论
    comment_query = Comment.objects.filter(article_id=1)

    for comment in comment_query:
        # 父评论为None就是根评论
        if not comment.parent_comment:
            comment_dict[comment.nid] = comment
            # 给根评论添加自定义属性,将所有根评论添加进去
            comment.sub_comment = []
            continue

    for comment in comment_query:
        # 一定是某个父评论的子评论
        for sub_comment in comment.comment_set.all():
            # 遍历该评论下边的所有子评论
            # 找这个子评论的最终根评论
            # find_root_comment: 找到子坪仑的最终根评论,返回评论对象
            root_comment = find_root_comment(sub_comment)
            # 把子评论添加到属于自己的根评论中
            comment_dict[root_comment.nid].sub_comment.append(sub_comment)

    for k,v in comment_dict.items():
        print(v,'根评论')
        for comment in v.sub_comment:
            print(' ',comment,'子坪仑')